#ifndef PPTPMESSAGE_H
#define PPTPMESSAGE_H

#include <QObject>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QVariant>
#include <QByteArray>

class PptpMessage : public QObject
{
    Q_OBJECT

public:
    QString path;                     // 路径
    QJsonObject parameters;           // 参数体
    QHash<QString, QByteArray> files; // 文件列表

    explicit PptpMessage(QObject *parent = nullptr);
    PptpMessage(const PptpMessage &pptpMessage, QObject *parent = nullptr);

    void setPath(QString path); // 设置路径：设置请求路径
    QString getPath();          // 获取路径：获取请求路径

    void setParameters(QJsonObject parameters); // 设置参数体：设置请求/响应参数体，参数体应是 QJsonObject 格式
    QJsonObject getParameters() const;          // 获取参数体：获取请求/响应参数体，参数体应是 QJsonObject 格式

    void addFile(const QString &filename, const QByteArray &file); // 添加文件：添加附件
    QHash<QString, QByteArray> getFiles() const;                   // 提取文件：从报文中提取附件

    QByteArray wrapJson() const;            // 包装 json：将报文包装为内含 json 格式字符串的 QByteArray
    void parseJson(const QByteArray &data); // 解析 json：从 内含 json 格式字符串的 QByteArray 获取数据

    void clear(); // 清空：清空报文
};

#endif // PPTPMESSAGE_H
